package PhaseoneModuletwo.TheFirstQuestion.code;

/**
 * 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值
 * 分别实现二维数组中所有行和所有列中所有元素的累加和并打印。
 * 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印。
 */
public class TheFirstQuestion {

    //定义一个[16][16]的整形二维数组
    int[][] arr = new int[16][16];

    public void arrSum() {
        //使用循环输入数组中的所有元素值
        int input = 0;
        for (int i = 0; i < arr[0].length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                arr[i][j] = input;
                input++;
            }
        }

        //定义一个变量接受从左上角到右下角累加的值
        int lutord = 0;
        //定义一个变量接受从右上角到左下角累加的值
        int rutold = 0;
        int a = 0;
        int b = 15;
        //用for循环计算每行和每行累加的值
        for (int i = 0; i < arr.length; i++) {

            //定义一个变量接受每行累加的值
            int rowSum = 0;
            //定义一个变量接受每列累加的值
            int comulen = 0;

            for (int j = 0; j < arr.length; j++) {
                rowSum += arr[i][j];
                comulen += arr[j][i];
            }

            lutord += arr[i][i];
            rutold += arr[a][b];
            a++;
            b--;

            //把每行累加的值进行控制台打印
            System.out.println("第" + (i + 1) + "行累加的和为：" + rowSum);
            //把每列累加的值进行控制台打印
            System.out.println("第" + (i + 1) + "列累加的和为：" + comulen);

        }
        //把左上角到右下角累加的值进行控制台打印
        System.out.println("左上角到右下角累加和为：" + lutord);
        //把右上角到左下角累加的值进行控制台打印
        System.out.println("右上角到左下角累加和为：" + rutold);
    }

    public static void main(String[] args) {
        TheFirstQuestion tfq = new TheFirstQuestion();
        tfq.arrSum();
    }
}
